#ifndef ESDL_LIST_H
#define ESDL_LIST_H

/**
 * @struct ListElement
 * @brief Linked list : queue
 */
typedef struct EsdlLinkedListElement EsdlLinkedListElement;
struct EsdlLinkedListElement {
    void* data; //!< Generic data structure
    struct EsdlLinkedListElement* next; //!< Next element of the list
    struct EsdlLinkedListElement* previous; //!< Previous element of the list
};

typedef struct EsdlLinkedListElement* EsdlLinkedList;

void addFirst(struct EsdlLinkedListElement **, void *);
void addLast(struct EsdlLinkedListElement **, void *);
void* removeFirst(struct EsdlLinkedListElement **);
void* removeLast(struct EsdlLinkedListElement **);
void removeElement(struct EsdlLinkedListElement **, void *);

#endif
